s = "Hello, Python world!"
#字符串长度计算
# len = len(s)
# print(len)
# 计算字符串中"o"字符的个数
num = s.count('o')
print(num)
# 将字符串转换为大写
print(s.upper())
# 将字符串转换为小写
print(s.lower())
# 查找"Python"在字符串中的位置
print(s.find("Python"))
# 替换字符串中的"world"为"universe"

print(s.replace('world','universe'))
# 检查字符串是否以"Hello"开始
if s.startswith('Hello'):
    print("字符串是以Hello开始")
else:
    print("字符串不是Hello开始")
# 检查字符串是否以"!"结尾
if s.endswith('!'):
    print("字符串是以!结尾")
else:
    print("字符串不是以!结尾")
# 以","为分隔符，拆分字符串
s1= s.split(',')
print(s1)
# 去除字符串首尾的"!"
ss=s.strip("!")
print(ss)
#字符串反转
print(s[::-1])
# 字符串切片，获取"Python"
print(s[7:13])
# 将字符串s中的"Hello,"删除
print(s.strip("Hello,"))
# 拼接两个字符串 "Hello," 和 "World!"
s1 ="Hello,"
s2 ="World!"
print(s1+s2)
# 使用f-string合并字符串和数字2021
num =2021
print(f'{s},{num}')
# 找出'a'第一次出现的位置
print(s.find('a'))
# 找出'e'最后一次出现的位置
print(s)
last_position = s.rfind('e')
print(last_position)
# 计算字符串中空格的数量
num = s.count(' ')
print(num)
# 使用循环遍历字符串中的每个字符
for i in s:
    print(i)
# 将字符串转为"列表"形式，每个字符为一个列表元素
s1 = list(s)
print(s1)
# 字符串排序（提示：先转换为列表）
s1 = list(s)
s1.sort()
print(s1)
ss = ''.join(s1)
print(ss)
# 判断字符串是否为数字
is_numeric = s.isdigit()

print("字符串是否为数字?", is_numeric)
# 将列表 `['Hello,', 'Python', 'World!']` 使用空格连接为一个字符串
list =['Hello,', 'Python', 'World!']
joined_string = ' '.join(list)
print(joined_string)
# 使用%操作符格式化字符串，将数字100插入到"Number: "后面
number = 100
formatted_string = "Number: %d" % number
print(formatted_string)
# 检查字符串是否全部为小写字母
print(s.islower())
# 检查字符串是否全部为大写字母
print(s.isupper())
# 将数字列表 `[1, 2, 3]` 转换成字符串，元素之间用`-`连接
list = ['1','2','3']
print("-".join(list))
# 找出字符串中所有的"o"的位置
o_positions = []
for i in range(len(s)):
    if s[i] == 'o':
        o_positions.append(i)
print("All positions of 'o':", o_positions)

#  替换字符串中的第一个"o"为"O"
print(s.replace('0','0',1))
# 字符串插入操作，向字符串指定位置插入子字符串"amazing "
newString = "amazing"
insert_position = 1
new_string = s[:insert_position]+newString+s[insert_position:]
original_string = "Hello, world! This is Python."

print(new_string)

s = "Python is great!"
# 1. 字符串反转: 给定字符串`s = "Python is great!"`，不使用任何内置函数，编写代码以反转字符串。
print(s)
print(s[::-1])
# 2. 字符计数: 对于同一个字符串`s`，计算字符 `t'` 在其中出现的次数。
num = s.count('t')
print(num)
# 3. 替换字符: 把字符串`s` 中的所有空格替换成下划线 ``。
print(s.replace(' ','_'))
# 4. 检查回文: 检查字符串`s2 = "A man, a plan, a canal, Panama!"` 在忽略大小写、标点和空格的情况下是否为回文字符串。
# s2 = "A man, a plan, a canal, Panama!"
# s=s2.replace(" ","")
# s=s.replace(",","")
# s=s.replace("!","")
# s=s.lower()
# print(s)
# if s[::1] == s[::-1]:
#     print("是回文字符串")
# else:
#     print("不是")
# 5. 子字符串查找: 在`s` 中查找第一次出现子字符串 `is"` 的位置。
print(s)
position=s.find("is")
print(position)
# 6. 字符串插入: 在`s` 中第一个 `t'` 字符之后插入子字符串`"_inserted"`。
position=s.find('t')
str ="_inserted"
print(s[:position]+str+s[position:])
# 7. 部分替换: 替换`s` 中第一次出现的 `great"` 为 `awesome"`。
# s = s.replace("great", "awesome", 1)
# print(s)
# 8. 切片与拼接: 将`s` 切分为两部分，其中第一部分包含前半部分的字符，第二部分包含后半部分的字符，然后将这两部分以相反顺序拼接起来。
length = len(s)
new_s = s[length//2:] + s[:length//2]
print(new_s)
# 9. 创建字符串列表: 使用列表生成式，根据字符串`s` 创建一个列表，其中包含`s` 的每个单词的首字母大写形式。
capitalized_words = [word.capitalize() for word in s.split()]
print(capitalized_words)
# 10. 字符替换加密: 编写一个函数`encrypt`，使用字典 `a: m, b: n, ... z: l}` 的对应规则加密字符串`s3 = "encryption"`
def encrypt(s):
    char_map = {'a': 'm', 'b': 'n', 'c': 'o', 'd': 'p', 'e': 'q', 'f': 'r', 'g': 's',
                'h': 't', 'i': 'u', 'j': 'v', 'k': 'w', 'l': 'x', 'm': 'y', 'n': 'z',
                'o': 'a', 'p': 'b', 'q': 'c', 'r': 'd', 's': 'e', 't': 'f', 'u': 'g',
                'v': 'h', 'w': 'i', 'x': 'j', 'y': 'k', 'z': 'l'}
    encrypted_string = ''.join(char_map.get(char, char) for char in s)
    return encrypted_string
s3 = "encryption"
encrypted_s3 = encrypt(s3)
print("加密后的字符串:", encrypted_s3)
